import React from 'react';
import { Form, Select, Card, Breadcrumb, Icon, Radio, Checkbox, Button, Row, Col, DatePicker } from 'antd';
import axios from '../../components/Engineering/axios'
import BasicDataPicker from './components/basic-data-picker'
import ThreeSizesInputBoxesDatepicker from './components/three-sizes-input-boxes-datepicker'
import NonOprionalDateTime from './components/non-optional-date-time'
import CustomDateRangeSelection from './components/custom-date-range-selection'
import PresetCommonDateRanges from './components/preset-common-date-ranges'
import CustomizedDateCell from './components/customized-date-cell'
import { ControlledDatePicker, ControlledRangePicker } from './components/control-panel-datepicker'
import moment from 'moment';

const { Option, OptGroup } = Select;
const { Item: FormItem } = Form;
const { MonthPicker, RangePicker } = DatePicker;


class KimDatePicke extends React.Component {

  render() {
    const { getFieldDecorator } = this.props.form
    const formItemLayout = {
      labelCol: {
        xs: { span: 24 },
        sm: { span: 4 },

      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 16 },
      }
    }
    return (
      <>
        <Card title='最简单的用法，在浮层中可以选择或者输入日期' style={{ marginTop: 10 }}>
          <BasicDataPicker />
        </Card>

        <Card title='使用 format 属性，可以自定义日期显示格式' style={{ marginTop: 10 }}>
          <DatePicker defaultValue={moment('2019/09/18', 'YYYY/MM/DD')} format={'YYYY/MM/DD'} style={{ marginBottom: 10 }} />
          <br />
          <DatePicker defaultValue={moment('18/09/2019', 'DD/MM/YYYY')} format={['DD/MM/YYYY', 'DD/MM/YY']} style={{ marginBottom: 10 }} />
          <br />
          <MonthPicker defaultValue={moment('2019/01', 'YYYY/MM')} format={'YYYY/MM'} style={{ marginBottom: 10 }} />
          <br />
          <RangePicker
            defaultValue={[moment('2019/09/18', 'YYYY/MM/DD'), moment('2019/09/18', 'YYYY/MM/DD')]}
            format={'YYYY/MM/DD'}
            style={{ marginBottom: 10 }} />
        </Card>

        <Card title='三种大小的输入框，若不设置，则为 default' style={{ marginTop: 10 }}>
          <ThreeSizesInputBoxesDatepicker />
        </Card>

        <Card title='增加选择时间功能，当 showTime 为一个对象时，其属性会传递给内建的 TimePicker' style={{ marginTop: 10 }}>
          <DatePicker placeholder="Select Time"
            showTime
            onChange={(value, dateString) => console.log(`Selected Time:${value}`, `Formatted Selected Time:${dateString}`)}
            onOk={(value) => console.log('onOk: ', value)}
            style={{ marginBottom: 10 }} />
          <br />
          <RangePicker
            placeholder={['Start Time', 'End Time']}
            showTime={{ format: 'HH:mm' }}
            format="YYYY-MM-DD HH:mm"
            onChange={(value, dateString) => console.log(`Selected Time:${value}`, `Formatted Selected Time:${dateString}`)}
            onOk={(value) => console.log('onOk: ', value)} />
        </Card>

        <Card title='可用 disabledDate 和 disabledTime 分别禁止选择部分日期和时间，其中 disabledTime 需要和 showTime 一起使用' style={{ marginTop: 10 }}>
          <NonOprionalDateTime />
        </Card>

        <Card title='禁用' style={{ marginTop: 10 }}>
            <DatePicker defaultValue={moment('2015-06-06', 'YYYY-MM-DD')} disabled  style={{marginRight:20}} />
            <MonthPicker defaultValue={moment('2015-06', 'YYYY-MM')} disabled style={{marginRight:20}} />
            <RangePicker defaultValue={[moment('2015-06-06', 'YYYY-MM-DD'), moment('2015-06-06', 'YYYY-MM-DD')]} disabled style={{marginRight:20}} />
        </Card>

        <Card title='当 RangePicker 无法满足业务需求时，可以使用两个 DatePicker 实现类似的功能' style={{ marginTop: 10 }}>
          <CustomDateRangeSelection />
        </Card>

        <Card title='可以预设常用的日期范围以提高用户体验' style={{ marginTop: 10 }}>
          <PresetCommonDateRanges />
        </Card>

        <Card title='在浮层中加入额外的页脚，以满足某些定制信息的需求' style={{ marginTop: 10 }}>
          <DatePicker renderExtraFooter={() => 'extra footer'} style={{ marginBottom: 10 }} /><br />
          <DatePicker renderExtraFooter={() => 'extra footer'} showTime style={{ marginBottom: 10 }} /><br />
          <RangePicker renderExtraFooter={() => 'extra footer'} style={{ marginBottom: 10 }} /><br />
          <RangePicker renderExtraFooter={() => 'extra footer'} showTime style={{ marginBottom: 10 }} /><br />
          <MonthPicker renderExtraFooter={() => 'extra footer'} placeholder="Select month" />
        </Card>


        <Card title='使用 dateRender 可以自定义日期单元格的内容和样式' style={{ marginTop: 10 }}>
          <CustomizedDateCell />
        </Card>


        <Card title='【受控】通过组合 mode 与 onPanelChange 控制要展示的面板' style={{ marginTop: 10 }}>
          <ControlledDatePicker />
          <br />
          <ControlledRangePicker />
        </Card>





      </>
    )

  }
}

export default Form.create({ name: 'KimDatePicke' })(KimDatePicke)



// API# 日期类组件包括以下四种形式。
// ☼ DatePicker
// ☼ MonthPicker
// ☼ RangePicker
// ☼ WeekPicker

// 国际化配置#
// 默认配置为 en-US，如果你需要设置其他语言，推荐在入口处使用我们提供的国际化组件，详见：ConfigProvider 国际化。
// 如有特殊需求（仅修改单一组件的语言），请使用 locale 参数，参考：默认配置。

// import locale from 'antd/es/date-picker/locale/zh_CN';
// <DatePicker locale={locale} />;

// 注意：DatePicker、MonthPicker、RangePicker、WeekPicker 部分 locale 是从 value 中读取，所以请先正确设置 moment 的 locale。
// // 默认语言为 en-US，如果你需要设置其他语言，推荐在入口文件全局设置 locale
// import moment from 'moment';
// import 'moment/locale/zh-cn';
// moment.locale('zh-cn');
// <DatePicker defaultValue={moment('2019-01-01', 'YYYY-MM-DD')} />;


// 共同的 API#
// 以下 API 为 DatePicker、MonthPicker、RangePicker, WeekPicker 共享的 API。
// 参数	                    说明	类型	默认值	版本
// allowClear	             是否显示清除按钮	boolean	true	
// autoFocus	             自动获取焦点	boolean	false	
// className	             选择器 className	string	''	
// dateRender	             自定义日期单元格的内容	function(currentDate: moment, today: moment) => React.ReactNode	-	
// disabled	               禁用	boolean	false	
// disabledDate	           不可选择的日期	(currentDate: moment) => boolean	无	
// dropdownClassName	     额外的弹出日历 className	string	-	3.3.0
// getCalendarContainer	   定义浮层的容器，默认为 body 上新建 div	function(trigger)	无	
// locale	                 国际化配置	object	默认配置	
// mode	                   日期面板的状态（设置后无法选择年份/月份？）	time|date|month|year|decade	'date'	
// open	                   控制弹层是否展开	boolean	-	
// placeholder	           输入框提示文字	string|RangePicker[]	-	
// popupStyle	             额外的弹出日历样式	object	{}	
// size	                   输入框大小，large 高度为 40px，small 为 24px，默认是 32px	string	无	
// suffixIcon	             自定义的选择框后缀图标	ReactNode	-	3.10.0
// style	                 自定义输入框样式	object	{}	
// onOpenChange	           弹出日历和关闭日历的回调	function(status)	无	
// onPanelChange	         日历面板切换的回调	function(value, mode)	-	3.12.0

// 共同的方法#
// 名称	                   描述	版本
// blur()	                 移除焦点	
// focus()	               获取焦点 	

// DatePicker#
// 参数	                   说明	类型	默认值	版本
// defaultValue	           默认日期，如果开始时间或结束时间为 null 或者 undefined，日期范围将是一个开区间	moment	无	
// defaultPickerValue	     默认面板日期	moment	无	3.10.8
// disabledTime	           不可选择的时间	function(date)	无	
// format	                 设置日期格式，为数组时支持多格式匹配，展示以第一个为准。配置参考 moment.js	string | string[]	"YYYY-MM-DD"	
// renderExtraFooter	     在面板中添加额外的页脚	(mode) => React.ReactNode	-	
// showTime	               增加时间选择功能	Object|boolean	TimePicker Options	
// showTime.defaultValue	 设置用户选择日期时默认的时分秒，例子	moment	moment()	
// showToday	             是否展示“今天”按钮	boolean	true	
// value	                 日期	moment	无	
// onChange	               时间发生变化的回调	function(date: moment, dateString: string)	无	
// onOk	                   点击确定按钮的回调	function()	-	
// onPanelChange	         日期面板变化时的回调	function(value, mode)	-	3.5.0

// MonthPicker#
// 参数	                   说明	类型	默认值	版本
// defaultValue	           默认日期	moment	无	
// defaultPickerValue	     默认面板日期	moment	无	3.10.8
// format	                 展示的日期格式，配置参考 moment.js	string	"YYYY-MM"	
// monthCellContentRender	 自定义的月份内容渲染方法	function(date, locale): ReactNode	-	
// renderExtraFooter	     在面板中添加额外的页脚	() => React.ReactNode	-	
// value	                 日期	moment	无	
// onChange	               时间发生变化的回调，发生在用户选择时间时	function(date: moment, dateString: string)	-	

// WeekPicker#
// 参数	                   说明	类型	默认值	版本
// defaultValue	           默认日期	moment	-	
// defaultPickerValue	     默认面板日期	moment	无	3.10.8
// format	                 展示的日期格式，配置参考 moment.js	string	"YYYY-wo"	
// value	                 日期	moment	-	
// onChange	               时间发生变化的回调，发生在用户选择时间时	function(date: moment, dateString: string)	-	
// renderExtraFooter	     在面板中添加额外的页脚	(mode) => React.ReactNode	-	3.12.0

// RangePicker#
// 参数	                   说明	类型	默认值	版本
// defaultValue	           默认日期	moment[]	无	
// defaultPickerValue	     默认面板日期	moment[]	无	3.10.8
// disabledTime	           不可选择的时间	function(dates: [moment, moment], partial: 'start'|'end')	无	
// format	                 展示的日期格式	string	"YYYY-MM-DD HH:mm:ss"	
// ranges	                 预设时间范围快捷选择	{ [range: string]: moment[] } | { [range: string]: () => moment[] }	无	
// renderExtraFooter	     在面板中添加额外的页脚	() => React.ReactNode	-	
// separator	             设置分隔符	string	'~'	3.14.0
// showTime	               增加时间选择功能	Object|boolean	TimePicker Options	
// showTime.defaultValue	 设置用户选择日期时默认的时分秒，例子	moment[]	[moment(), moment()]	
// value	                 日期	moment[]	无	
// onCalendarChange	       待选日期发生变化的回调	function(dates: [moment, moment], dateStrings: [string, string])	无	
// onChange	               日期范围发生变化的回调	function(dates: [moment, moment], dateStrings: [string, string])	无	
// onOk	                   点击确定按钮的回调	function(dates: moment[])	-	
// FAQ#
// 当我指定了 DatePicker/RangePicker 的 mode 属性后，点击后无法选择年份/月份？ 
// https://ant.design/docs/react/faq-cn#当我指定了-DatePicker/RangePicker-的-mode-属性后，点击后无法选择年份/月份？